package com.sxj.corejava.code01_基础;

/**
 * @author 石小俊
 * @date 2024年02月29日 20:21
 */
public class Test05_强制类型转换 {
    public static void main(String[] args) {
        int i1 = 100;
        // 将int类型的变量i1强制转换成byte类型
        // 强制类型转换时可能存在问题
        // 不会出现问题的场景:转换前的值在转换后的类型范围中
        byte b1 = (byte) i1;
        System.out.println(b1);

        // 某些场景进行强制类型转换时可能会出现问题
        // 场景一:小数转换成整数
        // 此时判断整数部分的值是否在目标类型的范围中
        // 如果整数部分的值在目标类型范围中,则直接截取掉小数部分的值,保留整数部分
        double d1 = 3.14;
        byte b2 = (byte) d1;
        System.out.println(b2);
        // 如果整数部分的值不在目标范围中,此时会继续对整数部分进行二进制转换
        double d2 = 1000.12;
        byte b3 = (byte) d2;
        System.out.println(b3);

        // 场景二:当整数转换整数时,如果转换前的值不在转换后的类型的范围中,则会进行二进制转换
        int i2 = 1000;
        byte b4 = (byte) i2;
        System.out.println(b4);

    }
}
